在讀取文件時,有時會遇到編碼錯誤的訊息。
SyntaxError: (unicode error) ‘utf-8’ codec can’t decode byte 0xc4 in position 0:
invalid continuation byte
如果文件已知使用utf-8來編碼,可以加上encoding參數:
with open('/path/to/file', 'r', encoding="utf-8") as f:
print(f.read())
那我們也可以安裝這個chardet套件來偵測未知文件的編碼:
pip install chardet
chardet.detect("Today is tuesday.")
可以查看字典型態的回傳:
{'confidence': 1.0, 'encoding': 'ascii'}
那也可以應用在flask上來讀取上傳的文件:
from flask import Flask,request
import chardet
import pandas as pd
app = Flask(__name__)
@app.route("/", methods=["POST"])
def hello_world():
file = request.files.get('file')
codingType = chardet.detect(file.read() )
print(codingType)
file.seek(0)
fileContent_csv = pd.read_csv(file, index_col=None ,encoding= codingType['encoding'])
fileContent_pd = pd.DataFrame(data=fileContent_csv)
return "<p>Hello, World!</p>"
if __name__ == "__main__":
app.run(debug=True,threaded=True)